package com.qf.house.controller;

import cn.hutool.core.io.IoUtil;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.util.UUID;

/**
 * 123123123123
 */
@RestController
@RequestMapping("/file")
@CrossOrigin
public class FileController {

    //上传的路径
    @Value("${upload.path}")
    private String uploadPath;


    /**
     * 文件上传
     *
     * 上传到哪里？
     *  1、上传到Tomcat内部相对路径 - 以前做法
     *  2、上传到本地的绝对路径 - 单体架构可以使用
     *  3、上传到阿里云OSS - 分布式架构使用
     * @return
     */
    @PostMapping("/upload")
    public String uploadFile(MultipartFile file){

        File f = new File(uploadPath);
        if (!f.exists()) {
            f.mkdirs();
        }

        //文件的名称
        String fileName = UUID.randomUUID().toString();

        try (
                //输入框？？？？
                InputStream in = file.getInputStream();
                //输出流？？？？
                OutputStream out = new FileOutputStream(new File(f, fileName));
        ) {
            //文件拷贝
            IoUtil.copy(in, out);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return fileName;
    }

    /**
     * 文件下载
     */
    @GetMapping("/download")
    public void downLoadFile(String fileName, HttpServletResponse response){
        try (
                //输入流
                InputStream in = new FileInputStream(new File(uploadPath, fileName));
                //输出流
                OutputStream out = response.getOutputStream();
        ) {
            IoUtil.copy(in, out);
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}
